/**
 * 
 *  Este arquivo é parte do programa TODO Ver nome. TODO Ver nome é um software livre; você pode redistribui-lo e/ou 
 *  modifica-lo dentro dos termos da Licença Pública Geral GNU como publicada pela Fundação do Software Livre (FSF); 
 *  na versão 2 da Licença, ou (na sua opnião) qualquer versão.
 *  
 *	Este programa é distribuido na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implicita
 *  de ADEQUAÇÂO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes.
 *	Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa, se não, escreva para a Fundação do
 *	Software Livre(FSF) 
 *
 *	Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 * 
 */
package fullcalc.comum.util;

import java.awt.event.KeyEvent;

import javax.swing.JTextField;

/**
 * <p>
 * Classe utilitária que realiza aos tratamentos básicos na tela de interface
 * gráfica
 * </p>
 * 
 * Criação: 29/04/2013 - 14:50
 * 
 * @author Willyan Guimarães Caetano
 */
public final class CalculadorGUIUtil {
	public static final String UM = "1";
	public static final String DOIS = "2";
	public static final String TRES = "3";
	public static final String QUATRO = "4";
	public static final String CINCO = "5";
	public static final String SEIS = "6";
	public static final String SETE = "7";
	public static final String OITO = "8";
	public static final String NOVE = "9";
	public static final String ZERO = "0";

	public static final int tamanhoMaximoCampo = 12;

	/**
	 * <p>
	 * Verifica se já existe algum dado digitado na calculadora.
	 * </p>
	 * 
	 */
	public static boolean verificaExistenciaDadosCampo(JTextField campo) {
		if (campo.getText().length() == 0) {
			return false;
		} else {
			return true;
		}
	}

	/**
	 * 
	 * @param campo
	 *            Valor capturado no campo da calculadora
	 * @return Valor do campo
	 */
	public static String capturaValorDoCampo(JTextField campo) {
		String valor = campo.getText();

		return valor;
	}

	/**
	 * <p>
	 * Faz o trabalho de concatenação dos números para composição do valor
	 * digitado na calculadora.
	 * </p>
	 * 
	 * @param caracter
	 *            Caracter digitado
	 * @param campo
	 *            Display da calculadora
	 * @return Valor atualizado
	 */
	public static String posicionaCaracteresCampo(String caracter,
			JTextField campo) {
		String valorAtualNoCampo = capturaValorDoCampo(campo);

		String valorAtualizado = valorAtualNoCampo + caracter;

		return valorAtualizado;
	}

	public static String processaInsercaoValorCampo(String caracter,
			JTextField campo) {
		if (verificaExistenciaDadosCampo(campo)) {
			String novoValor = posicionaCaracteresCampo(caracter, campo);

			return novoValor;
		} else {
			return caracter;

		}
	}

	/**
	 * <p>
	 * Verifica tecla que foi pressionada e caso seja um número, retorna para o
	 * display
	 * </p>
	 * 
	 * @param evt
	 *            Evento de tecla correspondente a tecla digitada
	 * @return Valor a ser exibido no display
	 */
	public static String verificaTeclaPressionada(java.awt.event.KeyEvent evt) {
		if (evt.getSource().equals(KeyEvent.VK_0)) {
			return ZERO;
		} else if (evt.getSource().equals(KeyEvent.VK_1)) {
			return UM;
		} else if (evt.getSource().equals(KeyEvent.VK_2)) {
			return DOIS;
		} else if (evt.getSource().equals(KeyEvent.VK_3)) {
			return TRES;
		} else if (evt.getSource().equals(KeyEvent.VK_4)) {
			return QUATRO;
		} else if (evt.getSource().equals(KeyEvent.VK_5)) {
			return CINCO;
		} else if (evt.getSource().equals(KeyEvent.VK_6)) {
			return SEIS;
		} else if (evt.getSource().equals(KeyEvent.VK_7)) {
			return SETE;
		} else if (evt.getSource().equals(KeyEvent.VK_8)) {
			return OITO;
		} else if (evt.getSource().equals(KeyEvent.VK_9)) {
			return NOVE;
		}
		// TODO Implementar o processo para as demais teclas

		else {
			return "";
		}
	}
}
